const AllItems = require('./items.js') ;
const promotions = require('./promotions.js') ;
 module.exports =function bestCharge(selectedItems) {
  let items = AllItems();
  let promotion = promotions();
  let input = obj_inputs(selectedItems);//输入整合
  let arr_in_out = arr_obj_shop(input,items);//初始计算
  let arr = arr_output(input,arr_in_out,promotion);//最后结果
  let str = `
  ============= 订餐明细 =============\n`+ arr[0];
  if(arr[1]){//优惠存在
    str += `使用优惠:\n` + `${arr[1]}\n` +
    `-----------------------------------\n`
  }
  str +=`总计：${arr[2]}元\n`+
  `===================================`
  return str;
}


let items = AllItems();
let promotion = promotions();
//输入整合。样本{'ITEM0013':4}
function obj_inputs(inputs){
    let obj = {} ;
    let arr = inputs.map((str)=>(str.split(' x ')));//输入里面带空格的，空格不要忘了
    
    arr.forEach((item)=>(obj[item[0]] = item[1]));//forEach去遍历

    return obj ;
}

//初始计算.输出样本[{'ITEM0001':4,
//                 name:'黄焖鸡',
//                 allprice:72}...{}...sum]（sum是总价）
function arr_obj_shop(obj_input,items){
    let arr = [] ;
    let sum = 0 ;
    for(let key in obj_input){
        for(let item of items){
          if(item.id === key){
              let obj = {} ;
              obj[key] = obj_input[key] ;
              obj.name = item.name ;
              obj.allprice = item.price * obj_input[key] ;
              sum += obj.allprice ;
              arr.push(obj) ;
          }          
        }
    }
    arr.push(sum) ;
    return arr ;
}
//优惠选择，输出样本[str(明细),str（优惠）,num（实付）]
function arr_output(input,arr_in_out,promotion){
  let arrOut = [];
  let str_pay = '';
  let str_pro = '';
  let sum = arr_in_out.pop();
  //订餐明细begin
  //因为需要拿到数量，好像只有用for循环
  for(let item of arr_in_out){
    for(let key in item){
      if(input[key]){
        str_pay +=  `${item.name} x ${input[key]} = ${item.allprice}元\n`;
      }
    }
  }
  str_pay += `-----------------------------------\n`;
  arrOut.push(str_pay);
  //订餐明细end
  
//如果把优惠单独拿出来选择的话，还是要传入总计，so就放到一起了，有点多

  //优惠begin
  let pro1 = 0 ;//优惠1
  let pro2 = 0 ;//优惠2
  let pro2_name = '';
  let pro = 0 ;//最后选择的优惠
  if(sum >= 30){
    pro1 = 6 ; //满30减6的优惠
  }
  //半价优惠
  for(let item of arr_in_out){
    for(let key in item){
      if(promotion[1].items.indexOf(key) !== -1){//半价商品
          pro2 += item.allprice/2;
          pro2_name += `${item.name}，` ;         
        }
      }
    }
    pro2_name = pro2_name.slice(0,-1);//去掉末尾的逗号
  //选择判断哪个优惠
  if(pro1 < pro2){
    pro = pro2
    str_pro =`${promotion[1].type}(${pro2_name})，省${pro}元`
  }else if(pro1 > pro2){
    pro = pro1 ;
    str_pro = `${promotion[0].type}，省${pro}元`
  }
  arrOut.push(str_pro);
  //优惠end
  arrOut.push(sum-pro);
  return arrOut ;
}
